package com.itheima.utils;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.beans.factory.FactoryBean;

import java.io.InputStream;

/**
 * @author huyoufu <https://github.com/huyoufu>
 * @TIME 2020-08-05 14:29
 * @description
 */

/*
 *  这个类实现 spring框架规定的一个接口!!!!
 *
 *  当我们spring框架检测到你这个对象是一个实现了FactoryBean 对象
 *  人家就理解 哦  这个根本就不是用户用的 它是用来创建希望对象
*/

public class SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory> {
    /**
     * 把这些复杂创建对象写到getObject方法中
     * @return
     * @throws Exception
     */
    @Override
    public SqlSessionFactory getObject() throws Exception {

        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        InputStream inputStream = SqlSessionFactoryUtil.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");

        //使用build创建sqlSessionFactory
        return sqlSessionFactoryBuilder.build(inputStream);

    }

    /**
     * 表示 返回的对象的类型是什么
     * @return
     */
    @Override
    public Class<?> getObjectType() {
        return SqlSessionFactory.class;
    }
}
